flannel后端之vxlan

vxlan 后端介绍

vxlan 新特性支持DirectRouting(v0.9.0)

Use in-kernel VXLAN to encapsulate the packets.

Type and options:

Type (string): vxlan
VNI (number): VXLAN Identifier (VNI) to be used. Defaults to 1.
Port (number): UDP port to use for sending encapsulated packets. Defaults to kernel default, currently 8472.
GBP (Boolean): Enable VXLAN Group Based Policy. Defaults to false.
DirectRouting (Boolean): Enable direct routes (like host-gw) when the hosts are on the same subnet. VXLAN will only be used to encapsulate packets to hosts on different subnets. Defaults to false.

默认情况下,使用内核的vxlan 来发送数据包

在性能要求比较苛刻的情况下,可以打开DirectRouting

DirectRouting 的原理类似host-gw 模式,是在同一子网,直接通过路由转发数据包。

如 使用route 命令后:

172.20.52.0     10.10.4.1     255.255.254.0   UG    0      0        0 eth0
172.20.96.0     10.10.4.2     255.255.254.0   UG    0      0        0 eth0

可以看到,同一子网内的机器,都添加了路由规则来打通网络

这样的好处,就是性能比较高,而坏处则是,无法获取到源pod 的ip了。

查看 vxlan 节点情况:

bridge fdb show dev flannel.1

vxlan 网络不通的几种情况

no route to host

原因,这个原因一般都是iptables 限制,那么,需要检查iptables配置

比如,限制了pod ip。 或者 限制了ping包

如,以下2条规则,会导致无法访问

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
humboldt Written by:

humboldt 的趣味程序园